package com.itheima.chapter01.operator;

public class Test {
    /*
     * 运算符：
     * 1.算术运算符
     * 2.赋值运算符
     * 3.关系运算符
     * 4.逻辑运算符
     * 5.三元运算符
     * 运算符：对常量或变量进行操作的符号
     * 表达式：用运算符把常量或者变量连接起来符合java语法的句子，就可以称之为表达式
     *       不同运算法连接的表达式体现的是不同类型的表达式
     * eg: int  a= 10;
     *     int b = 20;
     *     int c = a+b;
     *     + 是运算符，并且是算术运算符
     *     a+b是表达式，由于+是算术运算符，所以这个表达式叫做算术表达式
     * */

        public static void main(String[] args) {

            /*算数运算符
             *   + — * ：与小学运算方式一样
             *   / : 整数相除结果只能得到整数，如果想要得到带有小数的结果，必须加入小数（浮点类型）的运算
             *   %（取模） ：取余数
             * */
            System.out.println("算术运算符：");
            System.out.println(10+20);
            System.out.println(12-32);
            System.out.println(12*22);
            System.out.println(45/6);
            System.out.println(10/3.0);
            System.out.println(10.0/3);
            System.out.println(98%5);
            System.out.println(10%3);
            System.out.println(10%3.0);
            System.out.println(10.0%3);
            System.out.println("                              ");
            /*字符的+操作
             * ASCII码：美国信息交换标准代码是计算机中 字节到字符的一套对应关系
             * char提升为int,在ASCII码表中查找
             * 'a'--97
             * 'A'--65
             * '0'--48
             * */
            System.out.println("字符的+操作:");
            int a= 1;
            char b='c';
            System.out.println(a+b);
            System.out.println("                              ");
            /*字符串的+操作
             * “+”是字符串连接符，不是算术运算
             * 字符串可以使用 + 号，跟任意数据类型拼接
             *
             * */
            System.out.println("字符串的+操作:");
            System.out.println("itheima"+123);
            System.out.println("itheima"+5+5);//1."itheima"+5="itheima5";  2."itheima5"+5="itheima55"   从左到右依次执行
            System.out.println("itheima"+(5+5));//"itheima"+(5+5)="itheima"+10=itheima10
            System.out.println("                              ");
            /*
             * 自增自减运算符：
             *   ++：变量自身+1
             *   --：变量自身-1
             * 注意：
             * 1.++/--即可以放在变量前也可以放在变量后。
             * 2.单独使用时，++/--无论放在变量前还是放变量后，结果都一样
             * 3.参与操作：++/--在前 先对该自变量做自增或者自减，然后再拿变量参与操作
             *           ++/--在后 先将自变量原本的值，取出来参与操作，随后再进行自增或自减        *
             * */
            System.out.println("自增自减:");
            int c = 23;
            c++;
            System.out.println("c="+c);   //c=24
            double d =12.36;
            --d;
            System.out.println("e.txt="+d);  //e.txt=11.36
            int e =++c;
            int g =e++;
            double f =d--;
            double h=--f;
            System.out.println("e="+e);//e=25????????????
            System.out.println("c="+c);//c=25
            System.out.println("f="+f);//f=11.36??????????
            System.out.println("e.txt="+d);//e.txt=10.36
            System.out.println("g="+g);//g=25
            System.out.println("h="+h);//h=10.36
            System.out.println("____________________________________________________");
            /*
             * 赋值运算符
             * 1.=   赋值      a=10,(将10赋值给a)
             * 2.+=  加后赋值   a+=b,(将a+b的值赋值给a)
             * 3.-=  减后赋值   a-=b,(将a-b的值赋值给a)
             * 4.*=  乘后赋值   a*=b,(将a*b的值赋值给a)                                                                                               乘后赋值
             * 5./=  除赋值     a/=b,(将a/b的商值赋值给a)
             * 6.%=  除余后赋值  a%=b,(将a/b的余数值赋值给a)
             * */
            System.out.println("赋值运算符：");
            int q=12;
            int w=45;
            q+=w;
            System.out.println("q="+q);
            q-=w;
            System.out.println("q="+q);
            q*=w;
            System.out.println("q="+q);
            q/=w;
            System.out.println("q="+q);
            q%=w;
            System.out.println("q="+q);
            System.out.println("____________________________________________________");
            /*
             * 关系运算符（比较运算符）
             * ==   a==b,判断a和b的值是否相等[成立ture,不成立false]
             * !=  a!=b,判断a和b的值是否不相等[成立ture,不成立false]
             * >    a>b,判断a是否大于b[成立ture,不成立false]
             * >=   a>=b,判断a是否大于等于b[成立ture,不成立false]
             * <    a<b,判断a是否小于b[成立ture,不成立false]
             * <=   a<=b,判断a是否小于等于b[成立ture,不成立false]
             * 注意：1.关系运算符的结果都是boolean类型
             *      2.不要把==误写成=
             * */
            System.out.println(11==12);
            System.out.println(11!=12);
            System.out.println(11>12);
            System.out.println(11>=12);
            System.out.println(11<12);
            System.out.println(11<=12);
            System.out.println("____________________________________________________");
            /*
             * 逻辑运算符：用来连接关系表达式的运算符，也可以直接连接布尔类型的常量或者变量{1==2}
             * & 逻辑与   遇false则结果false，符号左右两边都是true则结果true，
             * | 逻辑或   遇true则结果true，符号左右两边都是false则结果false，
             * ^ 逻辑异或 符号左右两边相同true,符号左右两边不同false
             * ! 逻辑非   取反
             * */

        /*
        System.out.println(1 == 2);
        for (int i = 0; i < 5; i++) {
            if (i == 2 || i==3) {
                System.out.println("执行了");
                break;
            }
        }
        */
            System.out.println("&");
            System.out.println(true&true);
            System.out.println(true&false);
            System.out.println(false&true);
            System.out.println(false&false);
            System.out.println("|");
            System.out.println(true|true);
            System.out.println(true|false);
            System.out.println(false|true);
            System.out.println(false|false);
            System.out.println("^");
            System.out.println(true^true);
            System.out.println(true^false);
            System.out.println(false^true);
            System.out.println(false^false);
            System.out.println("!");
            System.out.println(!true);
            System.out.println(!false);
            System.out.println("____________________________________________________");
            /*
             * 短路逻辑运算符
             * && 短路与 作用与&相同，但是有短路效果
             * || 短路或 作用与|相同，但是有短路效果
             * 注意事项
             * 1.&，无论左边真假，右边都要执行
             *   &&，如果左边真 ，右边要执行；如果左边假 ，右边不执行
             * 2.|,无论左边真假，右边都要执行
             *  ||，如果左边真 ，右边要执行；如果左边假 ，右边不执行
             * */
            int z=6;
            int x=4;
            System.out.println(++z>4&&x--<5);
            System.out.println("z="+z);
            System.out.println("x="+x);
            /*
             * 三元运算符
             * 格式：关系表达式？表达式1:表达式2
             * 执行流程：
             * 首先计算关系表达式的值
             * 如果值为true，取表达式1的值
             * 如果值为false，取表达式2的值
             * */
            int min=z>x?x:z;
            System.out.println("z/x的最小值："+min);

        }
}